Conventionally, multimedia such as video and audio has been delivered using analog delivery mediums such as NTSC (National Television System Committee) signals, and has been stored using analog storage mediums such as video cassette recorders. The analog signals typically contain uncompressed frames of video. Thus, a significant part of the electronic components in a display device are dedicated to analog receiving hardware, and if the display device has a digital output, electronic components are needed to convert the analog signal to a digital signal. With the advent of digital delivery mediums, such as ATSC (Advanced Television Systems Committee) signals, and of digital storage mediums and DVDs, multimedia can be delivered and stored using pure digital signals. Digital signals typically contain compressed frames of video.
Meanwhile, consumers and business have an increasing number of digital playback devices such as high-definition televisions, digital video recorders, MP3 players and the like. However, the digital playback devices are typically incompatible with each other in ways such as compression format, resolution, and encryption. Furthermore, the digital playback devices are likely to use a digital format that is optimized for particular storage and playback capabilities. For example, a high-definition television can display a conventional high-definition signal, but a standard-definition television or a portable video player typically can only display a standard-definition digital signal with different characteristics. Differences in digital formats can include encoding, bit rate, resolution, and the like.
Due to differences in conventional playback devices, there are limits in the types of digital formats that can be read or written by the devices. In order to handle more digital formats, the complexity of related hardware increases dramatically. One reason for this is that the digital formats are typically decompressed in order to perform operations in the spatial domain to make use of legacy analog techniques which operate on decompressed video. Decompressed multimedia, especially video, requires high-performance processing hardware to handle the high bandwidth for data transfers. Decompressed video also requires significant amounts of storage.
A particular need in digital media applications involves changing media from a first compression format into a second compression format. Such a need may arise, for example, when a digital media broadcast feed is in a format that is not compatible with a certain playback system. The need to change digital media formats is becoming increasingly pervasive as more digital broadcast, distribution, storage, processing, and playback systems are brought into use.
Traditional approaches to transcoding have involved the implementation of a complete decoder that is separate from a complete encoder. Because decoders and encoders are sophisticated components that are difficult to design, the encoder and the decoder are typically designed separately, with interaction between the two limited to the uncompressed video frames. Referring to FIG. 1, a decoder design 101 is responsible for decoding one or more motion vectors 106, an error term 108, and a variety of the compression parameters including quantization, macroblock type/mode, etc. to produce a decoded frame 110. A separate and independent encoder design 103 is responsible for encoding the decoded frame 110 to produce an error term 114, one or more motion vectors 116 and a variety of the compression parameters including quantization, macroblock type/mode, etc.
From time-to-time, a frame will be received without interframe compression—such frames are used to directly establish or refresh the reference frame 112. For frames having interframe compression, one or more motion vectors 106, an error term 108, and a variety of the compression parameters including quantization, macroblock type/mode, etc. describe the currently decoded frame with reference to a previously decoded or received frame, the reference frame 112. The decoder 102 applies the motion vectors 106 to the reference frame 112, adds the error term 108, and applies a variety of other compression parameters including quantization, macroblock type/mode, etc., to the resulting macroblock to produce a decoded frame 110. The decoded frame 110 is stored for future use in the decoder as a reference frame 112, and is the output of the decoder design 101.
The decoded frame 110 is the input to the encoder design 103. In the encoder design 103, an encoder 104 compares the decoded frame 110 to a reference frame 120 to produce an error term 114, one or more motion vectors 116, and a variety of the compression parameters including quantization, macroblock type/mode, etc. The error term 114, the motion vectors 116, and a variety of the compression parameters including quantization, macroblock type/mode, etc. are the outputs of the encoder design 103. From time-to-time, a decoded frame 110 will pass through the encoder design 103 without interframe compression, for example, to establish reference frames at the remote receiver's decoder. Such a frame will typically also be stored locally as a reference frame 120 in reference frame storage 122.
The reference frame 120 represents a copy of the expected recently decoded frame at the remote receiver's decoder. The reference frame 120 is used in the encoder design 103 to determine an error term 114, one or more motion vectors 116, and a variety of the compression parameters including quantization, macroblock type/mode, etc. that will produce a frame similar to the decoded frame 110 in the remote receiver's decoder. Typically, the encoder design 103 will include a complete decoder 105, which applies the motion vectors 116 to the reference frame 120 and adds the error term 114 and applies a variety of other compression parameters including quantization, macroblock type/mode, etc., to produce a new reference frame 120. The new reference frame 120 is used for encoding by the encoder 104, and is also used as a reference frame 120 for the decoder 105 to use for decoding of subsequent frames.
Because the decoder design 101 and the encoder design 103 are separate and independent, conventional transcoders are inefficient and costly. Therefore, what is needed is a streamlined transcoder architecture.